//Controlleur de la page addUser
window.AddUserView = Backbone.View.extend({

    id : 'addUserView', 

    initialize:function () {
		this.render();
    },

    render:function () {
        $(this.el).html(this.template());
        return this;
    },

	events : {
        'click #send'     : 'beforeSaveUser',
        'click #cancel'   : 'cancelAddUser'
	},
    
    beforeSaveUser : function(e)
    {
        e.preventDefault();

        var username = $('#username').val();
        var mail = $('#mail').val();
        var password = $('#password').val();
        var confirmpassword = $('#confirmpassword').val();

        this.model = new User({'username' : username,'mail' : mail, 'password' : password, 'confirmpassword' : confirmpassword});

        //On bind le retour de la validation
        Backbone.Validation.bind(this, {
              valid: function(view, attr, selector) {
                    utils.removeValidationError(view, attr, selector);
              },
              invalid: function(view, attr, error, selector) {
                    utils.displayValidationErrors(view, attr, error, selector);
              }
        });
        //On lance la validation
        var isValid = this.model.isValid(true);
        if(isValid)
        {
            this.saveUser(this.model);        
        }

    },

    saveUser : function(user) {
        var self = this;
    	user.save(null, {
            success: function (model, response, options) {
                //L'enregistrement s'est bien effectuer
                if(response._id)
                {
                    router.navigate('home', true);
                }
                else
                {
                    console.log("La validation Server à echoué");
                    self.resetViewErrorMessage();

                    //TODO Réfléchir à récupérer le selector proprement
                    for (var key in response) {
                        utils.displayValidationErrors(self, key, response[key], 'name');
                    }
                }
            },
            error: function () {
               	console.log('Error dans saveUser');

            }
   	 	});
    },

    cancelAddUser : function()
    {
        this.resetViewErrorMessage();

        //On supprime les handlers des events
        this.undelegateEvents();
    },

    //TODO Trouvé un moyen de définir proprement le selector
    resetViewErrorMessage : function()
    {
        console.log("On reset les messages d'erreur de la vue");
        var self = this;
        this.$el.find('input').each(function()
        {
            utils.removeValidationError(self, $(this).attr("name") , "name");
        });
    },

    error : function(model, error) {
        return this;
    }

});

    

$(document).ready(function()
{
   // $('#myWizard').wizard();
});